# Installation of bl-obmenu-generator

* Detailed installation instructions can be found [here](https://forums.bunsenlabs.org/viewtopic.php?pid=54559#p54559).

## Installation - easy way:
In order to install **bl-obmenu-generator** with all the required dependencies on **BunsenLabs** run this script (if you already have the ~/src folder, remove "mkdir ~/src && " from the beginning):

`mkdir ~/src && sudo apt install cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libgtk2-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl && sudo cpanm Linux::DesktopFiles && sudo cpanm Data::Dump && cd ~/src && wget https://www.notabug.org/martix/bl-obmenu-generator/archive/master.tar.gz && tar vxf master.tar.gz && rm master.tar.gz && cd bl-obmenu-generator && sudo cp bl-obmenu-generator /usr/bin && sudo chmod 755 /usr/bin/bl-obmenu-generator && mkdir ~/.config/bl-obmenu-generator && cp schema.pl ~/.config/bl-obmenu-generator && bl-obmenu-generator -i -p`

After installation you can remove the ~/src folder with its content. On **default** bl-obmenu-generator is optimized for the **(Bunsen-)Paper icon theme**.


If the **icon theme Papirus** is used, run the follwing command in order to fix missing icons in the menu:

`cp ~/.config/bl-obmenu-generator/schema.pl ~/.config/bl-obmenu-generator/schema.pl.bak && sed -i '/Preferences/s/preferences-other/preferences-desktop/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/menu.xml/s/text-editor/menu-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/schema.pl/s/text-editor/menu-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-text-editor/s/package_editors/cs-windows/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-text-editor/s/hexedit/text-editor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/obconf/s/gtk-preferences/preferences-desktop-tweaks/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/bl-compositor/s/window-new/Xfwm4CompositeEditor/g' ~/.config/bl-obmenu-generator/schema.pl && sed -i '/gmrun/s/system-run/application-x-phatch/g' ~/.config/bl-obmenu-generator/schema.pl`

When changing back from the Papirus icon theme to Paper or Bunsen-Paper, you can use the ~/.config/bl-obmenu-generator/schema.pl.bak file and rename it to schema.pl.


### Installation - step by step

* Required dependencies:

    - perl>=5.14.0, libgtk2-perl (Gtk2)
	
	Install:
		
    `sudo apt install cpanminus gexec libcpan-distnameinfo-perl libcpan-meta-check-perl libfile-pushd-perl liblocal-lib-perl libgtk2-perl libmodule-cpanfile-perl libparse-pmfile-perl libstring-shellquote-perl libdata-dump-perl`
		
* Also required:    
    - perl-data-dump ([Data::Dump](https://metacpan.org/pod/Data::Dump))
    - perl-linux-desktopfiles>=0.25 ([Linux::DesktopFiles](https://metacpan.org/pod/Linux::DesktopFiles))

	Install:
		
    ```
sudo cpanm Linux::DesktopFiles
    sudo cpanm Data::Dump
```
		
* Optional dependency:
    - perl-file-desktopentry ([File::DesktopEntry](https://metacpan.org/pod/File::DesktopEntry))

	Install:
    
    
    
    `sudo apt install make`
    
    `sudo cpanm File::DesktopEntry`


		

### Installation process:

* Place the `bl-obmenu-generator` file inside your PATH, i.e.
	copy bl-obmenu-generator in /usr/bin and make it executable:
		```
		sudo chmod 755 /usr/bin/bl-obmenu-generator
		```
* Create the directory `~/.config/bl-obmenu-generator/` with
		```
		mkdir ~/.config/bl-obmenu-generator
		```
	and copy the file `schema.pl` in this folder.

### Running:

- to generate a dynamic menu with icons, execute: `bl-obmenu-generator -i -p`
- to generate a static menu without icons, execute: `bl-obmenu-generator -s -c`
- to update the icons after changing icon theme, execute: `bl-obmenu-generator -i -d`

### Locale support:

- If [File::DesktopEntry](https://metacpan.org/pod/File::DesktopEntry) is installed, `obmenu-generator` will use it to provide locale support.

### Customizing:

- the `schema.pl` file provides a direct customization access for the menu that will be generated.
- adding or removing a given entry from the `schema.pl` file is reflected inside the generated menu.
